1. Field of the Invention
Embodiments of the present invention relate to digital music systems, and in particular to processing of data that represents a musical performance.
2. Related Technology
The MIDI (Musical Instrument Digital Interface) standard defines parameters of hardware and software for the digital representation and performance of music. MIDI systems are generally comprised of a sequencer that generates MIDI data and an electronic instrument (e.g. a synthesizer) that produces sound in accordance with MIDI data received from the sequencer. MIDI data is typically formatted in accordance with the SMF (Standard MIDI Format) format. SMF data is comprised of individual messages, each of which specifies an event that occurs during a musical performance. The electronic instrument reproduces each of those events to reproduce the performance.
Modern MIDI-compatible electronic instruments are generally multi-timbral, meaning that they are composed of multiple sub-modules that are capable of independently and simultaneously producing sounds in response to corresponding streams of MIDI messages. Each sub-module of the electronic instrument is generally referred to as a channel. Each MIDI message includes addressing information that indicates the channel of the instrument to which the message is directed.
The events represented by MIDI messages are generally classified as being either note events or non-note events. Note events are related to the generation of specific musical notes or sounds by a channel, such as initiating or terminating the sounding of a particular note, or specifying other note-specific parameters such as how hard the note is to be struck. Non-note events are generally events that are not note-specific, such as selecting the type of instrument to be used by the channel (also referred to herein as a new instrument event), or setting the volume, pan or reverb of the channel. In the case where drum sounds are to be produced, a type of drum set may be selected as the instrument for the channel, and individual notes of the channel correspond to individual elements of the selected drum set.
FIG. 2 provides an example of events that may be represented in SMF data for a musical performance. FIG. 2 shows four channels of a standard 16-channel MIDI system. In the illustrated musical performance, the MIDI messages for performing the piece is supplied to channels 3 and 10. Channel 3 is used for performing the parts of several different tonal instruments, including a piano, guitar and trumpet. Each note played by each instrument involves note events such as turning on and turning off the note, each of which is represented by a separate MIDI message. Non-note events occurring on channel 3 include a change in volume and activation of each new instrument. For the drum part performed by channel 10 there are note events corresponding to the sounding of each element of the drum set.
MIDI technology makes the performance of musical pieces relatively easy since all that is needed is the MIDI messages representing the piece and appropriate devices to reproduce the events of the piece represented by the MIDI messages. However, because the devices reproduce the piece exactly in accordance with the representation encoded in the MIDI messages, it is difficult for a musician to impart a personal interpretation to the performance.
Some sequencers now allow musicians to alter the MIDI messages representing a musical performance in order to change some aspects of the performance. However the editing features provided by these systems are generally limited to simple channel-oriented parameter changes such as changing the channel volume. However, as illustrated in FIG. 2, it is now common for one channel to use different instruments at different points in a performance. Therefore, while it would be desirable for a composer or performer to be able to alter the parameters of a single instrument within a channel, or to substitute one instrument for another, conventional sequencers do not provide this capability. Therefore, to make such changes, the user would be required to manually create, delete and edit messages to effect the desired changes. This is extremely time consuming and precludes the possibility of making such changes in a real time performance environment.